package cn.zhukelili.generic;

/**
 * @description: 抽象化角色
 * @author: hhbeast
 * @since: 2018/7/29 10:18
 */
public abstract class Abstraction {
    //定义对实现化角色的引用
    private Implementor imp;

    //约束子类必须实现该构造函数
    public Abstraction(Implementor _imp) {
        this.imp = _imp;
    }

    //自身的行为和属性
    public void request() {
        this.imp.doSomething();
    }

    //获得实现化角色
    public Implementor getImp() {
        return imp;
    }
}

/*
各位可能要问，为什么要增加一个构造函数？答案是为了提醒子类，你必须做这项工
作，指定实现者，特别是已经明确了实现者，则尽量清晰明确地定义出来。
 */